home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Network Supervisor's Toolkit
/
Network Supervisor's Toolkit.iso
/
novell
/
pdsoct
/
pdsbul.oct
Wrap
Text File
|
1996-07-10
|
42KB
|
1,092 lines
OCTOBER 1990 BULLETS
MAD's COLUMN
Hello and welcome to the October edition of BULLETS!
There are several items in this month's BULLETS to which I would like to
draw your attention. First of all, Novell has begun shipping version 2.11
of XQL and NetWare SQL.
We have also released a new version of the NetWare C Interface, as well as
a new version of the C Network Compiler, now renamed Network C for DOS
v2.0. You will find descriptions and a list of enhancements for both of
these new products on page nine.
Finally, the past weeks have seen the release of two new Btrieve products:
Btrieve for Windows, and a new version of Btrieve for OS/2. In this edition
of BULLETS, you will find an article to help you get started using Btrieve
for Windows as well as some information on enhancements and changes made to
the new OS/2 Btrieve DLL.
You can receive information about upgrades for each of these products by
calling 1-800-RED WORD or (512) 346-8380.
Happy_Programming!
Mad Poarch
Director of Developer
Support/Services
Article: Xtrieving Btrieve
Xtrieve PLUS is a menu driven data retrieval system with a flexible report
writer. It is designed to work in conjunction with both Btrieve and
XQL/NetWare SQL applications, allowing users to catalog, retrieve, analyze,
and update the information in Btrieve files. This article explains how to
use Xtrieve PLUS to access existing Btrieve files.
Your physical files are actually Btrieve files, created by Xtrieve PLUS or
by any other Btrieve or XQL application. Xtrieve PLUS uses a data
dic-tionary which contains precise descriptive information about every data
field and every index for the Btrieve file. Before Xtrieve PLUS can
recognize the data in your existing Btrieve file, you must add a definition
to the Xtrieve PLUS dictionary which corresponds to the format of the data
in the Btrieve file.
In order to define a file to Xtrieve PLUS■s dictionary, you must first
prepare or obtain a list of all the fields in your Btrieve file in the
order in which they are stored in the data record, along with the data type
and length of each field. You must also know which of these fields are
defined as indexes (or keys).
Information about indexes can be obtained by executing a "BUTIL -stat
<filename.btr>" command for your Btrieve file. Still, it is important to
remember that the precise characteristics of all other fields in the file
must be obtained from whomever originally defined or developed the
application using that file.
Once you have this information, the process of defining a file to Xtrieve
PLUS's dictionary is fairly simple. From the main Xtrieve PLUS menu, you
should select the Dictionary option, and from there, the Define option. You
will first be asked for the Location Name; this should be the full drive,
path and filename (with extension) of the existing Btrieve data file. The
drive and pathname are optional and are not necessary if the data file is
in the current directory. Next, you will be prompted to supply a
Descriptive Filename. This is the tablename used within Xtrieve PLUS that
will appear on menus whenever you need to access the specific file.
Now you are ready to define the fields within the file. Be sure to define
the fields to correspond exactly to the data in the Btrieve file. After
completing this step, press the <ESC> key and you will be shown a menu that
includes options allowing you to:
- modify these field definitions
- continue adding or editing the fields already entered
- remove any fields already entered
- insert a new field in any position.
Select Complete from this menu when all the fields have been successfully
entered. You must next define the indexes for the file. Again, be sure to
select the fields to correspond exactly to the indexes already defined in
the existing Btrieve file. When you have finished defining the indexes,
press the <ESC> key and select Complete from the menu.
You should now see the File Definition Menu, from which you should select
the Finished-Don■t Create option. This instructs Xtrieve PLUS to add the
file definition to the data dictionary, but not to create the specified
Btrieve file (remember: a Btrieve Create operation creates a new, empty
Btrieve file). It is very important that you DO NOT select the
Finished-Create option, because if you do you will wipe out all data in
your existing Btrieve file. You would use the Finished-Create option only
if the data file did not already exist or if you specifically wanted to
clear out any data already in the data file.
You now have all the functionality of Xtrieve PLUS available for use on the
data you■ve collected in your Btrieve file, including browsing your data,
editing, sorting, adding new data, adding supplemental indexes, and writing
reports. Good luck and have fun!
Article: Using Btrieve for Windows
Btrieve for Windows v.5.10 was released September 4, 1990 to give Windows
application developers access to the Btrieve Record Manager and the
thousands of Btrieve databases currently installed worldwide. This article
will examine two issues which concern developers using Btrieve for Windows:
o How to initialize Btrieve.
o How to make calls to Btrieve.
o How to make calls to type Btrieve.
Initializing Btrieve for Windows
There are three ways to initialize Btrieve for Windows.
1. Use the default values. With this method, no special initialization
procedures need to be done.
2. Use the WIN.INI file. Create a section in the file that looks like
this:
[btrieve]
options=/m:40 /p:=4096 /b:20
tracefile=btrvtr (specify tracefile name)
Here, the options syntax is identical to that for the Btrieve for DOS
Networks version. Also an additional tracefile option can be specified:
traceops=0 1 19 20 21
This tracks the Btrieve operations and results and can be used to limit
trace operations.
3. Use the initialization routine BTRVINIT(). This routine can be found
in the interface file. The parameter syntax is the same. (e.g. the
page size parameter is specified /p:4096.)
To use BTRVINIT, set up a char far pointer. To do this you would declare:
char far *btrparm="/m:40 /p:4096";
The call would then be:
BTRVINIT(btrparm);
A description of the tracefile option and documentation on each of these
methods of initialization are available on CompuServe in NOVC LIB 16 under
the file name WBTREX.ZIP.
Calling Btrieve for Windows
In Btrieve for Windows, there are two options for making calls to Btrieve.
One method is to use the standard DOS, six-parameter format:
BTRV(operation,
pos_block,
data_buffer,
data_buffer_length,
key_buffer,
key_number);
Please take note that the interface uses all capital letters to place the
Btrieve call. Some "C" Btrieve for DOS interfaces use the lower case
convention to make the call. It is also important to remember that all the
pointers need to be far pointers. This means:
o the position block must be defined as
char far pos_block[128]
o the data buffer must be defined as
char far *data_buffer
o the data buffer length must be defined as
unsigned far *data_buffer_length
o the key buffer must be defined as
char far *key_buffer.
For example, if your customer is passing &structure for the data buffer,
then he would type cast the structure as a far char * in the call to
Btrieve.
BTRV(opcode,
posblk,
(char far *)&structure,
et cetera).
If you choose to use BTRV(six parameters), then you will need to use the
WBTRVINTF.C interface, which is on the Btrieve for Windows diskette.
Whether or not you choose to use it in this way, you should take a quick
look at it and take note of the way the far pointers are declared and how
the interface passes control to WBTRCALL.DLL.
Another method of calling Btrieve for Windows is to call BTRCALL(). This
method requires seven parameters:
BTRCALL(int opcode,
(char far *) position_block,
(char far *) data_buffer,
(unsigned far *)
data_buffer_length,
(char far *) key_buffer,
(unsigned char)
key_buffer_length,
int key_path );
The added parameter is the key length. This parameter is always set to 255
by the interface. The best documentation on this can be found by looking at
the interface file and reviewing the call to BTRCALL in the BTRV routine.
You can find example code for Btrieve for Windows in the file WBTREX.ARC on
CompuServe in NOVA LIB 16, where it will remain until mid-December. After
that the file will be moved to NOVA LIB 5. If you have additional questions
concerning Btrieve for Windows, please contact the Developer Support Group
at Novell Austin or your local Novell office.
Article: Using the APIs to Take Advantage of TTS
Transaction Tracking System (TTS) is a data integrity tool available
forAdvanced and SFT NetWare. TTS guarantees that either all file updates
within a given transaction will be written to disk or none of them will be.
If all the updates cannot be completed for some reason, then the
successfully completed updates are "backed out." This article will provide
the information needed to program with TTS, discussing the different
varieties of transaction tracking, and outlining the ways that you can
control when a transaction begins and ends.
Before using TTS in a program, you must take care of some housekeeping
chores. First, install TTS on the server which you will be using. Next,
flag the file which you have chosen to monitor as transactional, using
either the flag utility or the SetExtendedFile-Attributes call. Using the
call TTSIsAvailable, your program can check to make sure TTS is installed
and active. This function will return a 1 if TTS is installed and a 0 if
it is not.
Any code that will use TTS will use the following steps:
1. Start the transaction.
2. Execute any and all updates.
3. End or abort the transaction.
Implicit Transaction Tracking
Implicit transaction tracking is designed to be transparent to the user.
The start transaction takes place anytime the application locks a record in
a file that is marked transactional.
There are various APIs in the synchronization services for locking records
in files, but the standard locking calls available with DOS version 3.1 and
greater will also work. The "lock threshold", or number of locks which must
be made to indicate a Begin Transaction, defaults to 0, which means that
the first lock will begin a transaction. When necessary, you can examine or
change the "lock threshold" by using either the TTSGetApplicationThresholds
call or the TTSGetWorkstation-Thresholds call. The transaction is ended
when the number of locks falls below the threshold.
Explicit Transaction Tracking
Explicit transaction tracking is a more visible process and, therefore, is
easier to apply. Some calls, such as TTSBeginTransaction and
TTSEndTransaction, need very little explanation. However some calls need a
little more explanation. For instance, if you need to abort a transaction
and force a rollback for some reason, you would call TTSAbort-Transaction,
rather than TTSEndTransaction.
The server caches incoming requests, so it may take 3 to 5 seconds before a
transaction is actually written to disk. Because of this, you may need to
verify that the transaction has actually been written by calling
TTSTransactionStatus and passing it the transaction number returned by
TTSEndTrans-action. This function can be called repeatedly until it
successfully returns.
If an implicit transaction is in effect when you issue a
TTSBeginTransaction, then it is converted into an explicit transaction. If
the "lock threshold" is exceeded when the call TTSEndTransaction is issued,
then the explicit transaction will end and an implicit transaction will
begin.
Following is a simple program that demonstrates how to use record locking
to activate implicit transaction tracking. If you have additional questions
about TTS, please contact the Developer Support Group at Novell Austin or
your local Novell office.
/* This application was compiled with Turbo C in NetWare 386. */
#include <stdio.h>
#include <stdlib.h>
#include <nit.h>
#include <fcntl.h>
#include <share.h>
int f1;
int f2;
/* This function will check to see if the file is flagged transactional.
If not, it will flag it as such. */
VerifyTTSFlag(char *filname)
{
BYTE extendedFileAttributes;
GetExtendedFileAttributes(filname,
&extendedFileAttributes);
if (!(extendedFileAttributes & 0x16))
{
/* set the transactional bit of the
extended attributes if not set */
extendedFileAttributes += 0x16;
SetExtendedFileAttributes(filname,
extendedFileAttributes);
}
}
void read60bytes(int filnum,char *buff)
{
lseek(filnum,0L,SEEK_SET);
read(filnum,buff,60);
}
void write60bytes(int filnum,char *buff)
{
lseek(filnum,0L,SEEK_SET);
write(filnum,buff,60);
}
void main(int argc, char **argv)
{
int ret;
char ans;
long transactionNumber;
char buff1[80];
char buff2[80];
buff1[60]=0x00;
buff2[60]=0x00;
/* checking to see if TTS is available */
if (TTSIsAvailable()== 1)
printf("\n TTS is available");
/* If files are not flagged as transactional,
flag them */ VerifyTTSFlag("sys:orm/tts/tstfile1");
VerifyTTSFlag("sys:orm/tts/tstfile2");
f1=open("tstfile1",O_RDWR);
f2=open("tstfile2",O_RDWR);
/* Begin the transaction */
ret=TTSBeginTransaction();
printf("\nbegin transaction %d",ret);
read60bytes(f1,buff1);
read60bytes(f2,buff2);
printf("\n%s",buff1);
printf("\n%s",buff2);
/* This code just alters the record so we
can see if the transaction is aborted or
not. */
if (buff1[0]=="*")
memset(buff1,"x",60);
else
memset(buff1,"*",60);
write60bytes(f1,buff1);
if (buff2[0]=="*")
memset(buff2,"x",60);
else
memset(buff2,"*",60);
write60bytes(f2,buff2);
if (!strcmp("UPDATE",argv[1]))
{
ret=TTSEndTransaction(&transactionNumber);
printf("\n ending the transaction %d ",
ret);
printf("\n Transaction number %ld",
transactionNumber);
while (TTSTransactionStatus
(transactionNumber))
printf(".");
}
else
{
ret=TTSAbortTransaction();
printf("\n aborting the transaction %d",
ret);
}
setmem(buff1,"-",60);
setmem(buff2,"-",60);
read60bytes(f1,buff1);
read60bytes(f2,buff2);
printf("\n%s",buff1);
printf("\n%s",buff2);
}
Technical Insights:
New Features of the OS/2 Btrieve Dynamic Link Library
The OS/2 Btrieve DLL has some exciting new features.
Dynamic Initialization:
The same API that is used with Btrieve for Windows is used for the OS/2
DLL. The application can make a call to BTRVINIT () to initialize the DLL
instead of requiring the end-user to set the BTRPARMS environment variable.
Dynamic Reinitialization:
As in Btrieve for Windows, you can reinitialize Btrieve if all files have
been closed, all transactions have been completed, and the BTRVSTOP()
function has been called successfully.
The BTRVSTOP() must be issued and it must be successful. If this function
is unsuccessful, memory will be held for previous tasks and they will not
be removed from the task table. If a non-zero status is returned from
BTRVSTOP(), then there are files that have been left open and the
application must close the files. The occurrence of a status 1013, which is
undocumented, means that there are too many tasks running and the
application most likely did not issue a BTRVSTOP() successfully.
Parameter Validation
By setting an environment variable, the developer can isolate bugs caused
by passing invalid pointers to Btrieve. To set the environment variable,
issue the following command:
SET BTRPARMSCHK=YES
Once this variable is set, Btrieve will validate the pointer parameters
passed in for READ/WRITE access over certain ranges. The position block
pointer is validated over a range of 128 bytes, the data length pointer
over 2 bytes (it only points to an integer), the data buffer is validated
over the specified data length, and the key buffer is validated over 255
bytes.
If an invalid pointer is found, Btrieve will not process the operation and
will instead return a status 1015.
o BUTIL now works with 32K records. The previous limit was 16K.
o The BROLLFWD program is now a "family application" and can run in
either OS/2 or DOS.
o BROLLFWD now supports 64K records. The previous DOS version of
BROLLFWD supported a maximum record lengths of 32K.
o The default record size used is 8K. If the user has records larger
than this, they must start BROLLFWD with a "/d:XX" option where XX is
between 1 and 64, and they must round up their largest record size to
the next multiple of 1024.
Technical Insights: When to Load BROUTER
BROUTER.VAP is only needed if the server is going to be running other VAPs
making Btrieve calls, like NW$SQL.VP0 (NetWare SQL). In the NLM
environment, the same thing is true; BROUTER.NLM is only needed if another
NLM (such as NetWare SQL) is going to access Btrieve.
In multiple NetWare server environments, if you want to have Btrieve files
on multiple servers and access these files through NetWare SQL, then your
servers should be configured as illustrated in Figure 1.
Notice that BROUTER is only needed on the server that is running NetWare
SQL. It will intercept all Btrieve calls and pass them to the server that
contains the Btrieve file. In this regard, BROUTER works very much like
BREQUEST.
If BROUTER.VAP is loaded and not needed, there are two ways to remove it:
1. To remove BSERVER.VAP and BROUTER.VAP from the system directory on the
server, wait until no one is using the Btrieve VAP. Use the BSETUP
command and select "Remove." Then, select Install and reply "NO" to
the question where it asks "Load BROUTER?" Once again, do NOT install
if people are on the system accessing Btrieve. Doing so will break
their connection with Btrieve.
2. In the SYSTEM directory, change the flag for BROUTER.VAP from READ
ONLY to READ/WRITE, then rename the file to get rid of the .VAP
extension, or delete the file entirely. Since BROUTER has no hooks
into the bindery, there is no danger in doing this.
Always use "BSETUP - Remove" to get rid of BSERVER.VAP. If it is deleted
from the SYSTEM directory in any other way, it will not be removed from the
bindery. "BSETUP - Remove" will delete BSERVER.VAP and BROUTER.VAP (if
present) from the SYSTEM directory, and remove BSERVER from the bindery.
In the NLM environment:
o NetWare SQL must be unloaded before BROUTER and,
o BROUTER must be unloaded before BSPXCOM and Btrieve.
This can be accomplished from the server in either of two ways:
1. Use the provided .NCF files:
:NSSTOP
:UNLOAD BROUTER
:BSTOP
2. Manually unload the following:
:UNLOAD NSSPXCOM
:UNLOAD NWSQL
:UNLOAD BROUTER
:UNLOAD BSPXCOM
:UNLOAD BTRIEVE
Technical Insights: Getting Object Connection Numbers
You should note that the GetObjectConnectionNumbers function call will
return successfully, even if you pass it a bad Object Name. With all other
functions using the bindery calls ObjectName and ObjectType, you typically
get a NO_SUCH_OBJECT (0xFC) return code.
With GetObjectConnection-Numbers, this is not the case. This call only
checks for the number of current connections for the object. If the
GetObjectConnectionNumbers call returns 0, assume that the object is not
logged in or the name is bad.
Technical Insights:
Btrieve VAP v5.10 Internal Error Message
With the new Btrieve VAP v5.10, if you specify a value of 0 for any of the
parameters in BSETUP while loading Btrieve, the following message will
appear:
BSER 2.00 - 5.10 - Internal Error. 0 Memory Allocation.
This message is purely informational. Btrieve is just notifying you that it
has not reserved any space for one of the functions which it is capable of
performing. Calling on one of these functions will result in a status code,
which will vary, depending on the function called.
For example, if the Number of Transactions = 0 in BSETUP, and a Begin
Transaction (19) is issued, a Status 36 (Transaction Error) will be
returned. If the Number of Locks = 0 in BSETUP, and a lock of some sort
(2xx) is applied, a Status 81 (Lock Error) will be returned.
Technical Insights:
Valid File Handles in the VAP Environment
Zero is a valid file handle in a VAP. Therefore, make the open function you
write return a -1, and do not assume that zero is invalid.
i.e.
if (handle > 0 ) {Okay}
you should instead use:
if (handle >= 0) {Okay}
Technical Insights: Btrieve v5.10 Error Checking
The documentation for Btrieve 5.10 describes a change in how Btrieve
handles error checking. Btrieve now returns non-zero status codes in two
cases where v5.0 returned status 0:
1. When you perform a Get operation with one key and then an update using
a different key number. Btrieve 5.10 will return a status 7 (Different
Key Number). With Btrieve v5.0, it would have returned a status 0.
2. Doing a Get Next right after an Open will return a status 8 (Invalid
Positioning). Btrieve v5.0 would have returned a record (undetermined)
with status 0 in this case.
Technical Insights: Btrieve v5.10 Documentation Error
In version 5.10 of Btrieve for DOS, the documentation states that if you
are using the product in a "client-based" environment, DOS v2.0 or above is
required. In reality, Btrieve checks for DOS versions and will return the
message, "Incorrect DOS version", if you attempt to load it with any
version of DOS which preceeded v3.1.
This is a DOCUMENTATION error, not a product error. It has been reported
and will be corrected with the next printing of the manual.
Technical Insights: GetNextExtended in Btrieve
When specifying the number of records to be skipped which do not satisfy
the filter condition on a GetNextExtended, you can specify the value 0. In
this case, "a system-determined value will be used" (page 4-59, Btrieve
Programmer■s Manual, for v.5.10). This value is 127 for Btrieve for DOS,
and 1023 when using the VAP or NLM.
Problem Listings
Patches can be downloaded from NetWire, or acquired from Novell Austin at
no charge. To acquire a patch diskette from us, contact Developer Support
via phone, mail, or FAX (see page 11). Please specify the name of each
product for which you would like patches.
BROUTER.NLM v5.11 Patches
1. This patch ensures that there will be only one connection per server
and serializes client threads to avoid an as-yet-unexplained SPX hang.
2. This patch fixes the SPX hang mentioned above and may be used instead
of patch #1 (using both patches is equivalent to using just #1). This
allows up to three Brouter-Btrieve connections to a given server and
may result in improved performance in some cases.
Btrieve v5.10 Patches
1-26. Refer to earlier issues of BULLETS.
27. Btrieve (NLM, VAP, Brequest) This patch fixes a problem in which, for
data-only files, Btrieve returns data to the key buffer after Get
Direct, Update, Insert and Extended Insert. This patch MUST be made
both to the VAP or the NLM and to the Requester. The VAP (or NLM)
sends a flag to the Requester, so if you do not patch the Requester,
the flag will not be understood.
28. Btrieve (DOS) This patch corrects a timing-related bug which causes
Btrieve (DOS) files to become corrupted when one workstation opens a
file while another workstation simultaneously closes that same file
from an accelerated processing mode.
29. Btrieve (NLM) This patch corrects a problem which prevents a file,
opened on the server by Btrieve, from being open for read-only access
by a non-Btrieve application, even though the file has the Shareable
attribute set by the NetWare FLAG utility.
30. Btrieve (VAP, DOS) This patch fixes a bug causing Btrieve to return an
erroneous status 26 when a supplemental index with 8 segments is added
to a data-only Btrieve file of size 512 bytes.
31. Btrieve (DOS) This patch prevents Btrieve from returning an erroneous
status 83 when it performs Insert Extended operations within a
transaction.
32. Btrieve (NLM) This patch fixes a bug in NetWare SQL. Apply this patch
only AFTER applying patch #27.
33. Btrieve (VAP, NLM) This patch fixes a bug which causes the user's key
buffer to be overwritten with garbage after a Get Direct returns a
status 22 (user's data buffer too small). This patch also fixes a bug
which prevents the NLM from returning a key value after a Get Direct
returns a status 22, and the user's data buffer IS long enough to at
least receive the fixed length portion (including the keys) of the
record. NOTE: This patch will only work if patch #27 has been applied
to the VAP or the NLM and to BREQUEST.EXE.
34. Btrieve (VAP) This patch fixes a bug which causes a GPI crash on the
VAP's server when the application uses the Extended Insert function
and passes a data buffer which is larger than the "largest record
size" parameter configured by BSETUP.
35. Btrieve (DOS) This patch fixes a bug which causes Btrieve to make an
unneeded pre-image file, when the very first operation requested after
Btrieve is loaded is a Create.
36. Btrieve (DOS) This patch fixes a bug which causes Btrieve to crash (or
show other unpredictable symptoms) while updating a record retrieved
with a Get Direct or Step (no key) operation when:
(1) there has been no Insert or Get (using a key) since opening the
file, AND (2) prior to the file's Open operation, the file's
positionblock array contained values other than binary zeros.
37. Btrieve (NLM, DOS, and VAP) This patch fixes a bug which causes
Btrieve to return an erroneous status 2 when deleting a record from a
file with a supplemental index. This bug occurs most often when only a
few records have been inserted since the creation of the supplemental
index. In the VAP or DOS versions, the bug occurs only if the
supplemental index was created with the NLM.
38. BTRTOOLS - (Windows Btrieve Utilities) This patch fixes a bug in the
Description File Utility which drops the first word of comments from
the description file.
39. Btrieve (OS/2) This patch fixes a bug which causes a segmentation
violation during re-initialization through BTRVINIT().
40. Btrieve (VAP) This patch fixes an error in patch #34 which causes a
status 39 to be returned to XQLI during start-up.
41. Btrieve (OS/2 & Windows) This patch fixes the same problem described
in patch 35.
42. Btrieve (OS/2 & Windows) This patch fixes the problem described in
patch 36.
43. Btrieve (OS/2 & Windows) This patch fixes the same problem described
in patch 37. In Btrieve for Windows and Btrieve for OS/2, this bug
will only occur when using a file created by the Btrieve NLM.
44. Btrieve (DOS & OS/2) This patch fixes a bug which causes lock errors.
When a file is opened in exclusive mode, the application repeats the
following sequence several times, each time using a different record:
it retrieves a record using a multiple record lock bias (300 or 400)
and then updates or deletes that record. Eventually, a Status 81 (Lock
Error) is returned. The number of times the sequence will repeat
before returning the Status 81 is determined by the user's
specification of the maximum number of multiple locks (/L:).
For DOS Btrieve, this bug will also appear if the file is opened in
other modes, provided that the file is on a non-network drive and
SHARE.EXE is not loaded.
45. BTRTOOLS (Windows) This patch fixes a bug in the Description File Edit
Utility which requires File Information key count to match the total
number of key segments, instead of the total number of keys.
46. Btrieve (DOS) This patch fixes a bug which prevents Btrieve from
returning a status code 83 when a record is updated but not read
inside a transaction.
Unresolved Xtrieve PLUS v4.01 Problems
99. (DOS, OS/2) When an INTEGER with a mask which has decimal places is
translated out to SDF/DIF files, the value goes out scaled according
to the mask. However, when the value is translated back in from the
SDF/DIF file, it is not unscaled before insertion into the data file.
Thus, a value of 345 with a mask of ZZZ.99 will be translated out as
3.45, but when the value is translated back in, it will have a value
of 3 (regardless of the mask). Xtrieve should use the mask when
translating out AND in. Provided the mask is still ZZZ.99, the value
should be translated in as 345.
Xtrieve PLUS v4.01a Patches
1-97. Refer to earlier issues of BULLETS
98. This patch fixes a bug in which, during a Modify All (or Remove All),
Xtrieve PLUS attempts to start a transaction on the view, regardless
of the setting of the Lock flag from the configuration file.
100.This patch fixes a bug qhich causes Xtrieve PLUS to issue a status 11
when you try to create a dictionary.
101.This patchfixes a bug which causes Xtrieve PLUS to respond incorrectly
with the message, "Dictionary is empty." when VIEW.DDF contains more
than 254 view definitions and you try to recall or remove a view. The
store command functions properly, however.
Novell Education
Novell Education now offers classes for many of the Development Products;
including, Btrieve, XQL, Xtrieve and NetWare Client APIs. These classes are
designed to give participants a complete introduction to the powerful
features of Novell■s development tools and services. Classes are formatted
to allow nearly 50% of the class time to be spent in hands-on activities.
901 - Programming with NetWare Client APIs. The price for this three-day
course is $1095 per person.
January 8-10 Orlando, FL
920 - Programming with Network Communication Services. 901 is a
prerequisite for 920. The price for this one-day class is $295 per person.
January 11 Orlando, FL
905 - Programming with Btrieve The cost to attend this three-day class is
$895 per person.
December 4-6 Orlando, FL
January 8-10 Orange County, CA
907 - Xtrieve Plus The price for this two-day course is $595 per person.
January 8-9 Sunnyvale, CA
910 - Programming with XQL The price for this three-day class is $895 per
person.
January 15-17 Dallas, TX
Classes are currently available in the U.S. and Canada.
International classes will be available in the future. To register or
obtain information on all classes, please call (800) 233-3382.
International customers interested in attending classes held in the U.S or
Canada should call (801) 537-8850 or your local Novell office.
New Releases: NetWare C Interface for DOS v1.2
NetWare C Interface for DOS v1.2 started shipping in October. The most
visible enhancements are newly-added C function calls that provide access
to the Print Server services offered by NetWare 386. These new function
calls give developers greater flexibility in specifying and maintaining
print services on the network. Other network service functions that have
been enhanced include the Diagnostic Services, Directory Services, File
Services, and Miscellaneous Services groups.
The documentation has been significantly improved, with the addition of
helpful appendices and icons to indicate function call compatibility
between 286 and 386 architectures/systems. Additionally, the C Interface
for DOS Technical Overview now includes an example diskette which
demonstrates call usage in programs. Source code and libraries are included
for four C Compilers: Microsoft C v6.0 and v5.1, Borland Turbo C v2.0,
WATCOM C v8.0 and v7.0, and Lattice C v6.05.
The upgrade from v1.1 to v1.2 is available through 1-800-RED-WORD for
domestic customers or (512) 346-8380 for international customers. Please
direct all FAX inquiries to (512) 345-7478.
New Releases: Network C for DOS v2.0
In October, the second release of Novell■s 16-bit C compiler for DOS began
shipping. Many new features and enhancements have been made in the new
version. The most immediately apparent change is in the name, which now
more accurately reflects the purpose of this product. The first release was
named C Network Compiler v1.0. The new release is called Network C for DOS
v2.0, indicating that the product is a full C language environment for
writing DOS-based network applications.
More tangible enhancements to v2.0 include:
o WATCOM v8.0 Compiler and Tools
o Embedded SQL, so that SQL statements can be coded directly
o NetWare C Interface for DOS v1.2, including function calls for NetWare
386 services
o Completely rewritten Network Application Tutorial with source code
examples
o Protected-mode compiler for writing larger programs
Upgrades are available to the following:
1. Customers who own C Network Compiler v1.0. (Upgrades are free to
anyone who purchased v1.0 between 9/17/90 and 10/17/90.)
2. Customers who own the NetWare Programmer's Workbench, which included
the v1.0 release of the compiler kit.
Both the full package and the upgrade are available by calling
1-800-RED-WORD for domestic customers or (512) 346-8380 for international
customers.Please direct all FAX inquiries to (512) 345-7478.
Fun & Facts
Test your 'developing' skills with the various PROFESSIONAL DEVELOPMENT
SERIES products you may be using by taking our F & F quiz. Have fun and
good luck! (See page 11 for answers.)
1. (Btrieve) What is the purpose of the Btrieve data-only files?
a) To have the ability to create indexes on the fly via Create
Supplemental Index (operation 31).
b) To store your data in chronological order of insertion in a Btrieve
file.
c) To have the ability to use your Btrieve data in a word processor.
d) A & B only.
2. Btrieve) Which Btrieve operation can you use to access Btrieve data
only files?
a) Get operations.
b) Step operations.
c) Read operations.
d) Scan operations.
3. (Xtrieve PLUS) Which text directive should be used to print a page
number in a report?
a) %page
b) %number
c) @page
d) @number
4. (Xtrieve PLUS) What function should you perform (which function-key
should you press) while recording a command file, in order to allow
the user to make a menu selection?
a) PROMPT for command input (F5)
b) PAUSE for command input (F3)
c) Temporarily SUSPEND execution (Alt-F9)
d) SHOW command file text window (F9)
5. (Xtrieve PLUS) What is the default function-key to chain command files
in Xtrieve?
a) F8
b) Shift-F7
c) Alt-F6
d) Ctrl-F3
6. (XQL/NetWare SQL) The latest release allows an application to intermix
XQL Manager and Primitive calls. If an application issues an XQLCursor
followed by an XQLCompile of "SELECT * FROM <viewname>", which of the
following Primitive functions should NOT be used?
a) xFetch
b) xDescribe
c) xFree
d) xField
7. (XQL/NetWare SQL) Scalar functions (a new feature in v2.11) can be
used in expressions at the XQLM or XQLP API level. Which of the
following is not a valid scalar function for string manipulation?
a) LENGTH
b) REVERSE
c) RIGHT
d) UPPER
8. (Btrieve) On a 386 server, if you have NetWare SQL, Btrieve, and
Brouter loaded and you want to access Btrieve files on another server
running Btrieve, you must also load Brouter on that server.
a) FALSE - The Brouter on your server will route the request directly to
Btrieve on the other server.
b) TRUE
9. (Btrieve) What is the earliest version of Microsoft C you can use in
order to take advantage of Embedded SQL?
a) 6.0
b) 4.0
c) 5.0
d) 5.1
10. (Btrieve) When specifying an Alternate Collating Sequence on a BTRIEVE
CREATE(14), how should the alternate sequence be specified?
a) By placing the filename in the databuffer following the key
specifications.
b) By dumping the alternate collating file into the databuffer, following
the key specifications.
c) By placing the filename at the beginning of the databuffer.
11. (Btrieve) When specifying data compression,
a) the record must be variable length.
b) the record must be fixed length.
c) the record can be fixed or variable length.
12. (Xtrieve PLUS) What is the Plus in Xtrieve PLUS?
a) An Xtrieve text editor
b) Xtrieve + patches.
c) The Report Option.
d) The ability to export command files as Lotus 1-2-3 worksheets.
13. (Xtrieve PLUS) Where does a FIELD/MODIFY ALL command get the
information it needs to perform a modification?
a) The /k option when starting Xtrieve.
b) A user-defined field.
c) The MODIFY.ALL file.
d) Xtrieve will prompt you for the data.
Professional Developers' Forums
The Professional Developers■ Forum is an informal setting where systems
developers can talk about important issues face-to-face with Novell
Austin■s development/support staff and with each other. Share your ideas
and software development expertise, discuss current issues and problems,
and learn about the latest tools and techniques for creating NetWare
applications.
The sessions are from 8:30 a.m. until 4:30 p.m. The cost to attend is $95
per person, which includes lunch. The forums scheduled for the next few
months are:
December 5 Toronto, ONT
January 9 Austin, TX
January 30 Seattle, WA
February 13 Boston, MA
For more information or to register, call 1-800-RED-WORD or (512) 346-8380.
Reservations cancelled less than five working days prior to the scheduled
Forum will forfeit the entire registration fee. If you need to reschedule,
do so within five working days. You may reschedule only once.
Helpful Hints When Calling Novell Austin
If you need telephone assistance with a development problem, please call
Developer Support at 1-800-SAY-HELP. International customers may call (512)
346-8380 or contact their local Novell office. Be prepared to give the
technical support operator your Direct Connect authorization number. This
number is required to direct your call to a software support engineer.
If you have just purchased a new Professional Development Series product,
you may register for 30 days of free telephone support. Please provide the
serial number of your new product as well as registration information to
the technical support operator. You must be registered before your call can
be directed to a software support engineer.
If you would like to request a patch diskette, tell the technical support
operator the name of each product for which you need patches. International
customers may contact their local Novell office. Patches are also available
on NetWire.
If you are calling to place an order, or for product information, please
dial 1-800-RED-WORD. International customers may contact their local Novell
authorized dealer or call (512) 346-8380. Novell Austin accepts MasterCard,
Visa and American Express credit cards.
Current Versions
NetWare 386 3.10a
NetWare 286
SFT-II 2.15c
Advanced 2.15c
ELS-I 2.12
ELS-II 2.15c
NetWare System Interfaces
C Interface - DOS 1.2
System Calls - DOS 1.0
OS/2 Developer's Kit 1.2d
386/ASM for NetWare 386 1.0
NetWare System Interface
Technical Overview 1.2
NetWare RPC
NetWare RPC for DOS 1.1
NetWare RPC 386 1.1
Network C Compilers
Network C for DOS 2.0
C Network Compiler/386 1.1
XQL
XQL for DOS 2.11
XQL for OS/2 2.11
NetWare SQL/386 (NLM) 2.11a
NetWare SQL (VAP) 2.11
Btrieve
Btrieve for DOS 5.10a
NetWare Btrieve (VAP) 5.10a
NetWare Btrieve 386 (NLM) 5.10
Btrieve for OS/2 5.10
Btrieve for Windows 5.10
Xtrieve PLUS
Xtrieve PLUS for DOS 4.01a
Xtrieve PLUS for OS/2 4.01
Report Executive
Report Executive
for DOS 4.01a
Report Executive
for OS/2 4.01a
FUN & FACTS ANSWERS
1. d
2. b
3. c
4. c
5. b
6. c
7. b
8. a
9. d
10. b
11. c
12. c
13. b
Professional Development Series Bullets is a publication from Novell. It is
sent free of charge to all registered Professional Development Series
product users, all Direct Connect telephone support subscribers, and to any
developers writing applications for the NetWare operating system. We
welcome any comments, questions, and suggestions for improvement you might
have about this publication.
All computer, software, or service names mentioned in this publication are
trademarks, servicemarks, or registered trademarks of their respective
holders.